<?php

/**
 * Контроллер для манипуляции с данным в администраитвной панели модуля Fields API
 * @author St.Murder
 *
 */
class Pr_fields extends Core {

	
    /**
     * Инициализация библиотек, подготовка модуля к работе
     */
    function __construct() {
        
        parent::__construct_admin();
        
        // Проверка доступа, если пользователь не авторизован, закрываем доступ
        if (!$this->usr->check_rights('admin')) {
            
            show_error('Нет доступа!!!');
        }
        
        // Языковой файл
        $this->load->language('page_main');
        
        // Модель для выполнения простых операция в административной панели
        $this->load->model('fields_admin_model');
        
        // Модель модуля Fields API
        $this->load->model('fields');
    }
    
    /**
     * Вывод полей, главная страница модуля
     * @return 
     */
    function index() {
        
    	// Библиотека для постраничной навигации
        $this->load->library('pagination');
        
        // Создание пагинации(постраничная разбивка)
        $vars['pagination'] = $this->pagination->create('admin/modul/page/index', $this->fields_admin_model->count_all(), $this->config->get('pagination', 'core'));
        $vars['all_pages'] = $this->fields_admin_model->get_all($this->config->get('pagination', 'core'), $this->pagination->offset())->result_array();
        
        // Выводим результат, т.е список полей
        parent::render($vars, 'admin/all', true);
    }
    
    /**
     * Добовление поля
     * @return 
     */
    function add() {
        
    	// Подгрузка хеллпера форм
        $this->load->helper('form');
        
        // Создаём массив для передачи данных для вставки в БД
        $data = array();
        
        // Валидация, проверка, заполнены ли все поля
        if ( $this->input->post('add', TRUE) ) {
            
        	// Библиотека валиадции
            $this->load->library('form_validation');
            
            // Список полей, которые должны быть заполнены
            $this->form_validation->set_rules('uri',   'URI',       'trim|required|min_length[2]|alpha_dash|xss_clean');
            $this->form_validation->set_rules('title', 'Заголовок', 'trim|required|min_length[2]|xss_clean');
            $this->form_validation->set_rules('text',  'Текст',     'trim|required|min_length[2]');
            
            // Если все поля заполнены, вставляем запись, уведомляем пользователя
            if ( $this->form_validation->run() ) {
                
                $data['notification'] = 'Поле создано';
                $this->fields_admin_model->add(set_value('uri'), set_value('title'), set_value('text'));
            }
            
            // Если нет, то указываем на список ошибок
            else {
                
                $data['notification'] = $this->form_validation->error_string();
            }
        }
        
        parent::render($data, 'admin/add', true);
    }
    
    /**
     * Редактирование поля
     * @param int $id Уникальный идентификатор записи
     * @return 
     */
    function edit($id) {
        
    	// Подгрузка хеллпера форм
        $this->load->helper('form');
        
        // Валидация, проверка, заполнены ли все поля
        if ( $this->input->post('edit', TRUE) ) {
            
        	// Библиотека валиадции
            $this->load->library('form_validation');
            
            // Список полей, которые должны быть заполнены
            $this->form_validation->set_rules('uri',   'URI',       'trim|required|min_length[2]|alpha_dash|xss_clean');
            $this->form_validation->set_rules('title', 'Заголовок', 'trim|required|min_length[2]|xss_clean');
            $this->form_validation->set_rules('text',  'Текст',     'trim|required|min_length[2]');
            
            // Если все поля заполнены, вставляем запись, уведомляем пользователя
            if ( $this->form_validation->run() ) {
                
                $data['notification'] = 'Поле изменено';
                $this->fields_admin_model->update($id, set_value('uri'), set_value('title'), set_value('text'));
            }
            
            // Если нет, то указываем на список ошибок
            else {
                
                $data['notification'] = $this->form_validation->error_string();
            }
        }
        
        // Выборка, по id - записи
        $data['page'] = $this->fields_admin_model->get_byid($id)->row_array();
        
        // Отрисовка содержимого записи
        parent::render($data, 'admin/edit', true);
    }
    
    /**
     * Удаление поля по уникальному идентификатору
     * @param $id
     * @return
     */
    function delete($id) {
        
    	// Вызов метода из модели, на удаление записи, затем выполнение
        $this->fields_admin_model->delete($id);
        
        // Переадресуем пользователя, на главную страницу модуля
        modul_redirect('modul/fields');
    }
}